export type UserStatus = 'active' | 'inactive' | 'suspended';

export type UserRole = 'admin' | 'manager' | 'user' | 'guest';

export interface User {
  id: string;
  username: string;
  email: string;
  displayName: string;
  avatar?: string;
  role: UserRole;
  status: UserStatus;
  department?: string;
  position?: string;
  phone?: string;
  createdAt: string;
  updatedAt: string;
  lastLoginAt?: string;
}

export interface CreateUserRequest {
  username: string;
  email: string;
  displayName: string;
  password: string;
  role: UserRole;
  department?: string;
  position?: string;
  phone?: string;
}

export interface UpdateUserRequest {
  username?: string;
  email?: string;
  displayName?: string;
  role?: UserRole;
  status?: UserStatus;
  department?: string;
  position?: string;
  phone?: string;
}

export interface UserFilters {
  status?: UserStatus[];
  role?: UserRole[];
  department?: string[];
  search?: string;
}

export interface ApiResponse<T> {
  success: boolean;
  data: T;
  message?: string;
}

export interface PaginatedResponse<T> {
  data: T[];
  total: number;
  page: number;
  pageSize: number;
} 